package com.shareyi.baseproject.kernel.common.spi.sequence;

/**
 * 序列号提供服务
 *
 * @author david
 * @date 2021-06-02
 */
public interface SequenceProvider<T> {

    /**
     * 默认的类型，一般使用全局唯一的主键生成器可以使用本类型；
     * 如：snowId
     */
    String DEFAULT_TYPE = "default";

    /**
     * 默认的序列号类型
     *
     * @return
     */
    default T next() {
        return next(DEFAULT_TYPE);
    }

    /**
     * 序列号提供器
     *
     * @return
     */
    T next(String type);
}
